package chain;

/**
 *
 * 206. 反转链表
 * https://leetcode-cn.com/problems/reverse-linked-list/
 *
 * 输入: 1->2->3->4->5->NULL
 * 输出: 5->4->3->2->1->NULL
 *
 * @author wxh
 */
public class Solution_1 {
	public ListNode reverseList(ListNode head) {
		ListNode pre = null; // 前驱指针:当前Node的前一个Node
		ListNode nextTmp = null; // 临时存放指针
		while (head != null) {
			nextTmp = head.next; // 先保存当前Node的原下节点
			head.next = pre; // 将当前Node的原下节点 指向 前驱指针
			pre = head; // 移动前驱指针，指向当前Node
			head = nextTmp; //移动到下一个node，进行下一次迭代
		}
		return pre; // 返回最后一次迭代的当前节点
	}

	class ListNode {

		int val;
		ListNode next;
		ListNode(int x) {
			val = x;
		}

	}



}